package interfazeak;

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;
import javax.swing.JSeparator;
import javax.swing.JPasswordField;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JTextPane;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.DropMode;

import laguntzaileak.BarietateKop;

import db.DBKudeatzailea;
import db.UpelaKud;

public class upelaGehitu extends JFrame {

	private JPanel contentPane;
	private JTextField litroakguztira;
	private JTextField txakolinarenzenbakia;
	private JTextField upelarenedukiera;
	private JLabel txakolinazenbakialabel;
	private JLabel upela;
	private JLabel litroakGuztira;
	private JButton barietateak;
	private JButton hurrengoa;
	private JButton gorde;
	private JComboBox comboBox;
	private JLabel lblEdukiera;
	private Vector<Integer> ehunekoak;
	private Vector<BarietateKop> barietateenbektorea;
	private Vector<Integer> emaitza;
	private Upategia guraso;
	private Vector<Integer> balioak;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			private Upategia Upategia;

			public void run() {
				try {
					upelaGehitu frame = new upelaGehitu(this.Upategia);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public upelaGehitu (Upategia guraso) {
		this.guraso = guraso;
		setTitle("TXAKOLINA EROSI");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 748, 452);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		botoiak_gehitu();
	}

	public void botoiak_gehitu() {
		emaitza = new Vector<Integer>();
		
		
		final Vector<Integer> ehunekoak = new Vector<Integer>();
		barietateenbektorea = new Vector<BarietateKop>();
		txakolinazenbakialabel = new JLabel("TXAKOLINA ZENBAKIA");
		txakolinazenbakialabel.setBounds(83, 143, 168, 30);
		contentPane.add(txakolinazenbakialabel);

		upela = new JLabel("UPELA");
		upela.setBounds(83, 89, 168, 30);
		contentPane.add(upela);

		litroakGuztira = new JLabel("LITROAK GUZTIRA");
		litroakGuztira.setBounds(83, 203, 168, 30);
		contentPane.add(litroakGuztira);

		/*hurrengoa = new JButton("GORDE ETA HURRENGOA");
		hurrengoa.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				UpelakKud.hurrengoa(emaitza, barietateenbektorea);
				upelaGehitu.this.hurrengoagorde();
			}
		});
		hurrengoa.setBounds(152, 350, 210, 25);
		contentPane.add(hurrengoa);*/

		gorde = new JButton("GORDE");

		gorde.addActionListener(new ActionListener() {
			
			
			

			public void actionPerformed(ActionEvent arg0) {
				Vector <Integer> emaitza = upelaGehitu.this.konprobatudena();
				if (emaitza.elementAt(0)==1){
					JOptionPane.showMessageDialog(upelaGehitu.this,
							"Aukeratu upel bat!", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);
				}
				else if (emaitza.elementAt(1)==1){
					JOptionPane.showMessageDialog(upelaGehitu.this,
							"Sartu txakolina ZENBAKI bat!", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);
				}
				else if (emaitza.elementAt(2)==1){
					JOptionPane.showMessageDialog(upelaGehitu.this,
							"Sartu upelaren edukiera. ZENBAKIA!", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);
				}
				else{
					emaitza = upelaGehitu.this.beteHutsuneak();
					boolean ondo = upelaGehitu.this.konprobatu(emaitza);
					boolean ondozenbakia = upelaGehitu.this
							.zenbakiakonprobatu(emaitza);
					if  (ondo == true && ondozenbakia == true) {
						if (barietateenbektorea.size()==0){
							JOptionPane.showMessageDialog(upelaGehitu.this,
									"Barietateak aukeratu!", "KONTUZ",
									JOptionPane.WARNING_MESSAGE);
						}
						else {
							int konfirmatu = JOptionPane.showConfirmDialog(
									upelaGehitu.this, "Gorde nahi duzu?");

						if (JOptionPane.OK_OPTION == konfirmatu) {
							UpelaKud.gorde(balioak, barietateenbektorea);
							upelaGehitu.this.buelta();
						}
							
						
						}	
							
					}
				}
			
			}
		});
				
			
			
/*
				if (emaitza.size()<=2|| barietateenbektorea.size()==0){
					JOptionPane.showMessageDialog(upeletanSartu.this,
							"Sartu Datuak");
				}
				else {
					boolean ondo = upeletanSartu.this.konprobatu(emaitza);
					boolean ondozenbakia = upeletanSartu.this
							.zenbakiakonprobatu(emaitza);
					if  (ondo == true && ondozenbakia == true) {

							UpelakKud.gorde(emaitza, barietateenbektorea);
							
							upeletanSartu.this.buelta();
						}

				}
				
			
			}

			
		});*/

		gorde.setBounds(450, 350, 117, 25);
		contentPane.add(gorde);

		comboBox = new JComboBox();
		comboBox.setBounds(284, 89, 62, 20);
		contentPane.add(comboBox);
		UpelaKud.kargatuComboBox(comboBox);

		comboBox.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				String cadena = "";

				int upela = (int) comboBox.getSelectedItem();

				int eduk = upelaEdukiera(upela);

				cadena = Integer.toString(eduk);

				upelarenedukiera.setText(cadena);
				
			}

		});

		litroakguztira = new JTextField();

	/*	litroakguztira.addFocusListener(new FocusAdapter() {
			@Override
			public void focusGained(FocusEvent e) {

			}

			public void focusLost(FocusEvent arg0) {

				String i = ((JTextField) arg0.getSource()).getText();

				int edukiera = Integer.parseInt(i);
				emaitza.add(2, edukiera);

			}
		});
*/
		litroakguztira.setBounds(284, 203, 62, 30);
		contentPane.add(litroakguztira);
		litroakguztira.setColumns(10);

		txakolinarenzenbakia = new JTextField();

		/*txakolinarenzenbakia.addFocusListener(new FocusAdapter() {

			public void focusGained(FocusEvent e) {

			}

			public void focusLost(FocusEvent arg0) {

				String i = ((JTextField) arg0.getSource()).getText();

				int txako = Integer.parseInt(i);
				emaitza.add(1, txako);
			}
		});
*/
		txakolinarenzenbakia.setBounds(284, 143, 62, 30);
		contentPane.add(txakolinarenzenbakia);
		txakolinarenzenbakia.setColumns(10);

		barietateak = new JButton("BARIETATEAK");
		barietateak.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				

				JDialog dialog = new Barietatea2(upelaGehitu.this, true, barietateenbektorea);
				dialog.setVisible(true);

			}
		});
		barietateak.setBounds(83, 263, 141, 25);
		contentPane.add(barietateak);

		upelarenedukiera = new JTextField();
		upelarenedukiera.setEditable(false);
		upelarenedukiera.setBounds(380, 89, 60, 30);
		contentPane.add(upelarenedukiera);
		upelarenedukiera.setColumns(10);

		lblEdukiera = new JLabel("EDUKIERA");
		lblEdukiera.setBounds(380, 72, 70, 15);
		contentPane.add(lblEdukiera);

		JButton btnAtzera = new JButton("UPATEGIA");
		btnAtzera.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				upelaGehitu.this.atzera();
			}
		});
		btnAtzera.setBounds(551, 35, 117, 25);
		contentPane.add(btnAtzera);

	}

	

	

	protected Vector<Integer> konprobatudena() {
		
		balioak = new Vector<Integer>();

	
		Vector<Integer> emaitza = new Vector<Integer>();
	
		if (comboBox.getSelectedIndex()==-1){
			emaitza.add(0,1);
		}
		else {
			int upela = (int) comboBox.getSelectedItem();
			emaitza.add(0,0);
			balioak.add(0,upela);
		}
		try {
			String katea = txakolinarenzenbakia.getText();
			int balioa = Integer.parseInt(katea);
			emaitza.add(1,0);
			balioak.add(1,balioa);
		}
		catch (NumberFormatException e){
		emaitza.add(1,1);
		
		}
		try {
			String katea2 = litroakguztira.getText();
			int balioa2 = Integer.parseInt(katea2);
			emaitza.add(2,0);
			balioak.add(2,balioa2);
		}
		catch (NumberFormatException e){
			emaitza.add(2,1);
		
		}
	
		return emaitza;
		}
		
	

	protected Vector<Integer> beteHutsuneak() {
		
		String cadena = "";
		int upela = (int) comboBox.getSelectedItem();
		int eduk = upelaEdukiera(upela);
		cadena = Integer.toString(eduk);
		upelarenedukiera.setText(cadena);
		emaitza.add(0, upela);
		
		String i = txakolinarenzenbakia.getText();
		int txako = Integer.parseInt(i);
		emaitza.add(1, txako);
		
		
		String l = litroakguztira.getText();

		int edukiera = Integer.parseInt(l);
		emaitza.add(2, edukiera);

		
		return emaitza;
	}

	protected boolean zenbakiakonprobatu(Vector<Integer> emaitza) {
		boolean ondo = UpelaKud.txakolinazenbakia(emaitza.elementAt(1));
		if (ondo == false) {
			JOptionPane.showMessageDialog(upelaGehitu.this,
					"Txakolinaren zenbakia errepikatuta!", "KONTUZ",
					JOptionPane.WARNING_MESSAGE);

		}
		return ondo;
	}

	protected boolean konprobatu(Vector<Integer> emaitza) {
		int sartutakoa = emaitza.elementAt(2);
		int edukiera = UpelaKud.lortuUpelarenEdukiera(emaitza.elementAt(0));
		boolean ondo = true;
		if (sartutakoa > edukiera) {
			ondo = false;
			JOptionPane.showMessageDialog(upelaGehitu.this,
					"Upelaren litroak baino gehiago ezinezkoa da", "KONTUZ",
					JOptionPane.WARNING_MESSAGE);

		}
		return ondo;
	}

	protected void atzera() {
		Upategia m = guraso;
		m.setVisible(true);
		this.dispose();

	}

	protected void hurrengoagorde() {
		upelaGehitu u = new upelaGehitu(guraso);
		u.setVisible(true);
		this.dispose();

	}

	protected void buelta() {
		Upategia m = new Upategia();
		m.setVisible(true);
		this.dispose();

	}

	private int upelaEdukiera(int n) {
		int edukiera = UpelaKud.lortuUpelarenEdukiera(n);

		return edukiera;
	}

	public void gordeBarietatea(Vector<BarietateKop> barietateKant) {
		barietateenbektorea = new Vector<BarietateKop>();
			// zeharkatu barietateKant
		for (BarietateKop barietatekop : barietateKant) {
			System.out.println(barietatekop);
			barietateenbektorea.add(barietatekop);
		}
		
	}

	
	// eta datubasea eguneratu datu horiekin

}
